home *** CD-ROM | disk | FTP | other *** search
/ Aminet 19 / Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso / Aminet / demo / mag / trash3_2.lha / fuentes / FuentesFXC2P.lha / FXC2P.Conv_16Col_Normal < prev    next >
Text File  |  1980-01-14  |  8KB  |  356 lines

  1. ; En A5 metemos el inicio de donde queremos convertir en PVC
  2. ; En A6 metemos el inicio de donde queremos pintar en PFP
  3. ; Al final de PlanoX cambiar 10240 y similares para ajustar tamaño
  4. ; En d0 y d1 van Ancho (en LONGS) y Alto (PIXELS(BITS)) 
  5.  
  6. ************************************
  7. **** Plano 1 ***********************
  8. ************************************
  9. C2P_Conversion
  10.     mulu    d1,d0
  11.     subq    #1,d0
  12. .loop
  13.     move.w    d0,-(sp)
  14.     Moveq    #-1,D5        ;Mascara para Bytes Chunky (Plano 1)
  15.  
  16. ;    move.l    (a5)+,a0    ;Long 1 chunky (pixels  0 -  3)
  17. ;    move.l    (a5)+,a1    ;Long 2 chunky (pixels  4 -  7)
  18. ;    move.l    (a5)+,a2    ;Long 3 chunky (pixels  8 - 11)
  19. ;    move.l    (a5)+,a3    ;Long 4 chunky (pixels 12 - 15)
  20. ;    move.l    (a5)+,a4    ;Long 5 chunky (pixels 16 - 19)
  21. ;    move.l    (a5)+,d4    ;Long 6 chunky (pixels 20 - 23)
  22. ;    move.l    (a5)+,d6    ;Long 7 chunky (pixels 24 - 27)
  23. ;    move.l    (a5)+,d7    ;Long 8 chunky (pixels 28 - 31)
  24.  
  25.     movem.l (a5)+,a0-a4/d4-d7
  26.  
  27.     move.l    a0,d0        
  28.     move.l    a1,d2
  29.     lsl.l    #4,d2
  30.     or.l    d2,d0
  31.     and.l    d5,d0
  32.  
  33. ;    00004321000043210000432100004321
  34. ;    43210000432100004321000043210000
  35. ;    43214321432143214321432143214321
  36. ;    00010001000100010001000100010001 -> d0
  37. ;       4   0   5   1   6   2   7   3
  38.  
  39.     move.l    a2,d1
  40.     move.l    a3,d2
  41.     lsl.l    #4,d2
  42.     or.l    d2,d1
  43.     and.l    d5,d1
  44.  
  45. ;    00004321000043210000432100004321
  46. ;    43210000432100004321000043210000
  47. ;    43214321432143214321432143214321
  48. ;    00010001000100010001000100010001 -> d1
  49. ;      12   8  13   9  14  10  15  11
  50.  
  51.     add.l    d1,d1
  52. ;    lsl.l    #1,d1
  53.     or.l    d1,d0
  54.  
  55. ;    00110011001100110011001100110011 -> d0
  56.  
  57.     move.l    a4,d1
  58.     move.l    d4,d2
  59.     lsl.l    #4,d2
  60.     or.l    d2,d1
  61.     and.l    d5,d1
  62.  
  63. ;    00004321000043210000432100004321
  64. ;    43210000432100004321000043210000
  65. ;    43214321432143214321432143214321
  66. ;    00010001000100010001000100010001 -> d1
  67. ;      20  16  21  17  22  18  23  19
  68.  
  69.     move.l    a6,d3
  70.     move.l    a7,d2
  71.     lsl.l    #4,d2
  72.     or.l    d2,d3
  73.     and.l    d5,d3
  74.  
  75. ;    00004321000043210000432100004321
  76. ;    43210000432100004321000043210000
  77. ;    43214321432143214321432143214321
  78. ;    00010001000100010001000100010001 -> d3
  79. ;      28  24  29  25  30  26  31  27
  80.  
  81.     add.l    d3,d3
  82. ;    lsl.l    #1,d3
  83.     or.l    d3,d1
  84.  
  85. ;    00110011001100110011001100110011 -> d1
  86.  
  87.     lsl.l    #4,d1
  88.     or.l    d1,d0            ;d0 = mezcla de todas las longs
  89.  
  90. ;    11111111111111111111111111111111 -> d0
  91.  
  92.     move.l    d0,(a6)            ;Pintamos 32 pixels de golpe en el Plano 1
  93.  
  94.  
  95. ; Scrambled X Data:
  96.  
  97. ; (03,11,19,27,07,15,23,31,02,10,18,26,06,14,22,30)    (0-15)
  98. ; (01,09,17,25,05,13,21,29,00,08,16,24,04,12,20,28)     (16-31)
  99.  
  100.  
  101. ************************************
  102. **** Plano 2 ***********************
  103. ************************************
  104.  
  105.     add.l    d5,d5
  106. ;    lsl.l    #1,d5            ;Mascara para el plano 2
  107.  
  108.     move.l    a0,d0
  109.     move.l    a1,d2
  110.     lsl.l    #4,d2
  111.     or.l    d2,d0
  112.     and.l    d5,d0
  113.     lsr.l    #1,d0
  114.  
  115. ;    00004321000043210000432100004321
  116. ;    43210000432100004321000043210000
  117. ;    43214321432143214321432143214321
  118. ;    00010001000100010001000100010001 -> d0
  119. ;       4   0   5   1   6   2   7   3
  120.  
  121.     move.l    a2,d1
  122.     move.l    a3,d2
  123.     lsl.l    #4,d2
  124.     or.l    d2,d1
  125.     and.l    d5,d1
  126.  
  127. ;    00004321000043210000432100004321
  128. ;    43210000432100004321000043210000
  129. ;    43214321432143214321432143214321
  130. ;    00100010001000100010001000100010 -> d1
  131. ;      12   8  13   9  14  10  15  11
  132.  
  133.     or.l    d1,d0
  134.  
  135. ;    00110011001100110011001100110011 -> d0
  136.  
  137.     move.l    a4,d1
  138.     move.l    d4,d2
  139.     lsl.l    #4,d2
  140.     or.l    d2,d1
  141.     and.l    d5,d1
  142.     lsr.l    #1,d1
  143.  
  144. ;    00004321000043210000432100004321
  145. ;    43210000432100004321000043210000
  146. ;    43214321432143214321432143214321
  147. ;    00010001000100010001000100010001 -> d1
  148. ;      20  16  21  17  22  18  23  19
  149.  
  150.     move.l    a6,d3
  151.     move.l    a7,d2
  152.     lsl.l    #4,d2
  153.     or.l    d2,d3
  154.     and.l    d5,d3
  155.  
  156. ;    00004321000043210000432100004321
  157. ;    43210000432100004321000043210000
  158. ;    43214321432143214321432143214321
  159. ;    00100010001000100010001000100010 -> d3
  160. ;      28  24  29  25  30  26  31  27
  161.  
  162.     or.l    d3,d1
  163.  
  164. ;    00110011001100110011001100110011 -> d1
  165.  
  166.     lsl.l    #4,d1
  167.     or.l    d1,d0            ;d0 = mezcla de todas las longs
  168.  
  169. ;    11111111111111111111111111111111 -> d0
  170.  
  171. ;    lea    10240(a6),a6
  172.     move.l    d0,10240(a6)            ;Pintamos 32 pixels de golpe en el Plano 2
  173.  
  174. ************************************
  175. **** Plano 3 ***********************
  176. ************************************
  177.  
  178.     add.l    d5,d5
  179. ;    lsl.l    #1,d5            ;Mascara para el plano 3
  180.  
  181.     move.l    a0,d0
  182.     move.l    a1,d2
  183.     lsl.l    #4,d2
  184.     or.l    d2,d0
  185.     and.l    d5,d0
  186.     lsr.l    #1,d0
  187.  
  188. ;    00004321000043210000432100004321
  189. ;    43210000432100004321000043210000
  190. ;    43214321432143214321432143214321
  191. ;    00010001000100010001000100010001 -> d0
  192. ;       4   0   5   1   6   2   7   3
  193.  
  194.     move.l    a2,d1
  195.     move.l    a3,d2
  196.     lsl.l    #4,d2
  197.     or.l    d2,d1
  198.     and.l    d5,d1
  199.  
  200. ;    00004321000043210000432100004321
  201. ;    43210000432100004321000043210000
  202. ;    43214321432143214321432143214321
  203. ;    00100010001000100010001000100010 -> d1
  204. ;      12   8  13   9  14  10  15  11
  205.  
  206.     or.l    d1,d0
  207.  
  208. ;    00110011001100110011001100110011 -> d0
  209.  
  210.     move.l    a4,d1
  211.     move.l    d4,d2
  212.     lsl.l    #4,d2
  213.     or.l    d2,d1
  214.     and.l    d5,d1
  215.     lsr.l    #1,d1
  216.  
  217. ;    00004321000043210000432100004321
  218. ;    43210000432100004321000043210000
  219. ;    43214321432143214321432143214321
  220. ;    00010001000100010001000100010001 -> d1
  221. ;      20  16  21  17  22  18  23  19
  222.  
  223.     move.l    a6,d3
  224.     move.l    a7,d2
  225.     lsl.l    #4,d2
  226.     or.l    d2,d3
  227.     and.l    d5,d3
  228.  
  229. ;    00004321000043210000432100004321
  230. ;    43210000432100004321000043210000
  231. ;    43214321432143214321432143214321
  232. ;    00100010001000100010001000100010 -> d3
  233. ;      28  24  29  25  30  26  31  27
  234.  
  235.     or.l    d3,d1
  236.  
  237. ;    00110011001100110011001100110011 -> d1
  238.  
  239.     lsl.l    #4,d1
  240.     or.l    d1,d0            ;d0 = mezcla de todas las longs
  241.  
  242. ;    11111111111111111111111111111111 -> d0
  243.  
  244. ;    lea    10240(a6),a6
  245.     move.l    d0,20480(a6)            ;Pintamos 32 pixels de golpe en el Plano 3
  246.  
  247. ************************************
  248. **** Plano 4 ***********************
  249. ************************************
  250.  
  251.     add.l    d5,d5
  252.     lsl.l    #1,d5            ;Mascara para el plano 4
  253.  
  254.     move.l    a0,d0
  255.     move.l    a1,d2
  256.     lsl.l    #4,d2
  257.     or.l    d2,d0
  258.     and.l    d5,d0
  259.     lsr.l    #1,d0
  260.  
  261. ;    00004321000043210000432100004321
  262. ;    43210000432100004321000043210000
  263. ;    43214321432143214321432143214321
  264. ;    00010001000100010001000100010001 -> d0
  265. ;       4   0   5   1   6   2   7   3
  266.  
  267.     move.l    a2,d1
  268.     move.l    a3,d2
  269.     lsl.l    #4,d2
  270.     or.l    d2,d1
  271.     and.l    d5,d1
  272.  
  273. ;    00004321000043210000432100004321
  274. ;    43210000432100004321000043210000
  275. ;    43214321432143214321432143214321
  276. ;    00100010001000100010001000100010 -> d1
  277. ;      12   8  13   9  14  10  15  11
  278.  
  279.     or.l    d1,d0
  280.  
  281. ;    00110011001100110011001100110011 -> d0
  282.  
  283.     move.l    a4,d1
  284.     move.l    d4,d2
  285.     lsl.l    #4,d2
  286.     or.l    d2,d1
  287.     and.l    d5,d1
  288.     lsr.l    #1,d1
  289.  
  290. ;    00004321000043210000432100004321
  291. ;    43210000432100004321000043210000
  292. ;    43214321432143214321432143214321
  293. ;    00010001000100010001000100010001 -> d1
  294. ;      20  16  21  17  22  18  23  19
  295.  
  296.     move.l    a6,d3
  297.     move.l    a7,d2
  298.     lsl.l    #4,d2
  299.     or.l    d2,d3
  300.     and.l    d5,d3
  301.  
  302. ;    00004321000043210000432100004321
  303. ;    43210000432100004321000043210000
  304. ;    43214321432143214321432143214321
  305. ;    00100010001000100010001000100010 -> d3
  306. ;      28  24  29  25  30  26  31  27
  307.  
  308.     or.l    d3,d1
  309.  
  310. ;    00110011001100110011001100110011 -> d1
  311.  
  312.     lsl.l    #4,d1
  313.     or.l    d1,d0            ;d0 = mezcla de todas las longs
  314.  
  315. ;    11111111111111111111111111111111 -> d0
  316.  
  317. ;    lea    10240(a6),a6
  318.     move.l    d0,30720(a6)            ;Pintamos 32 pixels de golpe en el Plano 1
  319.     addq.l    #4,a6
  320. ;    lea    (-10240*3)+2(a6),a6    
  321.     
  322.     move.w    (sp)+,d0
  323.     dbra    d0,.loop
  324.     rts
  325.  
  326.  
  327. ;--------------------------------------------------------------------------------
  328. ;Calculo de tiempos en el cache:
  329. ;--------------------------------------------------------------------------------
  330. ;
  331. ;    1 MOVEq para mascara    = 1 * 2 =  2 ciclos
  332. ;    8 MOVEs ()+,Rn        = 8 * 5 = 40 ciclos
  333. ;    8 MOVEs Rn,Dn        = 8 * 2 = 16 ciclos
  334. ;    4 ANDs    entre registros    = 4 * 2 =  8 ciclos
  335. ;    7 LS?s            = 7 * 4 = 28 ciclos
  336. ;    7 ORs    entre registros    = 7 * 2 = 14 ciclos
  337. ;    1 MOVE    Dn,()        =       =  3 ciclos
  338. ;                     ----
  339. ;                     111 ciclos
  340. ;A partir del segundo plano:
  341. ;
  342. ;    1 LSL #1,D5        = 1 * 4 =  4 ciclos    
  343. ;    8 MOVEs Rn,Dn        = 8 * 2 = 16 ciclos
  344. ;    4 ANDs    entre registros    = 4 * 2 =  8 ciclos
  345. ;    7 LS?s            = 7 * 4 = 28 ciclos
  346. ;    7 ORs    entre registros    = 7 * 2 = 14 ciclos
  347. ;    1 MOVE    Dn,d16()    = 1 * 4 =  3 ciclos
  348. ;       1 ADDQ            = 1 * 2 =  2 ciclos
  349. ;    dbra            = 1 * 6 =  6
  350. ;                     ----
  351. ;                      79 ciclos
  352. ;
  353. ;+---------------------------------------------------------------+
  354. ;| 1x1 16 colores  = (111 + 79 * 3) / 32 = 10.8   ciclos / pixel |
  355. ;+---------------------------------------------------------------+
  356.